사이트 내 전체검색
PHP
[php] [Function] URLEncode urldecode
로빈아빠
https://cmd.kr/php/496 URL이 복사되었습니다.

본문

[Function] URLEncode urldecode

urlencode
urlencode -- 문자열을 URL 인코드합니다.
string urlencode ( string str)

-_.을 제외한 모든 영숫자가 아닌 문자를 퍼센트(%) 사인에 이어지는 두 16진수로 교체하고 공백은 플러스(+) 사인으로 교체한 문자열을 반환합니다. 이는 WWW 폼에서 인코드한 포스트 데이터, application/x-www-form-urlencoded 매체형과 같은 방식의 인코드입니다. 역사적인 이유로 공백을 플러스(+) 사인으로 인코드 하는 점이 RFC1738 인코딩(rawurlencode() 참고)과 다릅니다. 이 함수는 URL의 쿼리 부분에 사용하는 문자열을 인코딩할 때 편리합니다. 다음과 같이 다음 페이지로 변수를 전달합니다:

예 1. urlencode() 예제
<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?> 

 

주의: HTML 엔티티가 들어있는 변수에는 주의를 기울이십시오. &, ?, ? 같은 것은 브라우저에 의해 파싱되어 변수명 대신에 엔티티가 사용됩니다. 이는 몇년동안 W3C가 두드러지게 이야기해온 문제입니다. 레퍼런스는 여기에 있습니다: http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 PHP는 .ini 지시어의 arg_seperator를 통하여 W3C가 제시한 세미콜론 인수 구분자 변경을 지원합니다. 불행하게도 대부분의 유저 에이전트는 폼 데이터를 세미콜론 구분 형태로 전송하지 않습니다. 이를 해결하는 가장 현실적인 방법은 구분자로 &를 사용하는 대신 &amp;를 사용하는 것입니다. 이렇게 하면, PHP의 arg_separator를 변경할 필요가 없습니다. &로 내버려두고, 간단히 URL을 htmlentities(urlencode($data))를 사용하여 인코드하십시오.

예 2. urlencode()와 htmlentities() 예제
<?php
echo '<a href="mycgi?foo=', htmlentities(urlencode($userinput)), '">';
?>
 
 
참고: urldecode(), htmlentities(), rawurldecode(), rawurlencode().

* 특수문자 전송시 에러발생 방지

예제)
aaa.php :
<html><body>
<a href="bbb.php?data=<?echo "제목+내용";?>">검색 기준 - 제목+내용</a>
</body></html>


bbb.php :
<?
$data = $_GET["data"];
echo $data;
?>

출력 : 제목 내용

aaa.php 파일을 실행하여 링크를 클릭하면 bbb.php 파일이 실행되어 브라우저에 위와같이 + 기호가 사라진 형태로 나타난다. GET 방식은 특수문자의 전송을 보장해 주지 못한다.

aaa.php 파일을 아래와 같이 수정한다.
<html><body>
<a href="bbb.php?data=<?echo urlencode("제목+내용");?>">검색 기준 - 제목+내용</a>
</body></html>

출력 : 제목+내용


urldecode
urldecode -- URL 인코드 문자열을 디코드합니다.
string urldecode ( string str)

주어진 문자열의 %## 인코딩을 디코드합니다. 디코드한 문자열을 반환합니다.

예 1. urldecode() 예제
<?php
$a = explode('&', $QUERY_STRING);
$i = 0;
while ($i < count($a)) {
   $b = split('=', $a[$i]);
   echo 'Value for parameter ', htmlspecialchars(urldecode($b[0])),
         ' is ', htmlspecialchars(urldecode($b[1])), "<br />\n";
   $i++;
}
?>
 

참고: urlencode(), rawurlencode(), rawurldecode().

댓글목록

등록된 댓글이 없습니다.

PHP
871 (10/18P)

Search

Copyright © Cmd 명령어 3.145.156.204